using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.Collections;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

using SumGam;
using SumGam.Globals;
namespace SumGam.Structs
{
    [Serializable]
    public struct SaveEntry
    {
        public string name;
        public string[] Strings;
        public bool[] Bools;
        public double[] Doubles;
        public int[] Ints;
    }
    [Serializable]
    public struct SaveData
    {
        public long Ticks;
        public SaveEntry[] Entries;
    }
    //Thinking i might get rid of most of this
    public struct MapData
    {
        public TileData[,] Tiles;
        public string Name;
    }
    public struct SpriteData
    {
        public string Name;
        public string Texture;
        public Hashtable Animations;
    }
    public struct AnimData
    {
        public string Name;
        public int Row;
        public int Length;
    }
    public struct TileData
    {
        public int StartX;
        public int StartY;
        public int EndX;
        public int EndY;
        public string TileSet;
        public TileData(int x, int y, string tileset)
        {
            StartX = x * 16 - 16;
            StartY = y * 16 - 16;
            EndX = StartX + 16;
            EndY = StartY + 16;
            TileSet = tileset;
        }
    }
    public struct Option
    {
        public string Text;
        public Delegates.Generic Func;
    }
    public struct KeyComparison
    {
        public bool IsHeld; // should be true if the key was pressed last frame and is still pressed
        public bool IsUp; // should be true if the key is up
        public bool IsDown; // should be true if the key is down
        public bool JustReleased; // should be true if the key  was just released
        public bool JustPressed; // should be true if the key was just pressed
    }
}